<?php
class Configuracao
{
    
    private static $instance;
    
    private static $configuracoesIni;

    private function __construct() {}

    public static function getInstance(){
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
        
        return self::$instance;
    }
    
    /**
    * Método responsável por carregar as configuracoes do arquivo ini
	* e armazenar esses dados em constantes.
	**/
    public static function criarConstantes(){
    	if(!isset(self::$configuracoesIni)){
    		self::$configuracoesIni = parse_ini_file("config.ini");	
    	}
    	define ("_SEPARADOR_DIRETORIO_",self::obtemSeparadorDiretorio(self::$configuracoesIni['SO']));
    	define("_BASE_PATH_",self::$configuracoesIni['BASE_PATH']);
    	define("_BASE_URL_", self::$configuracoesIni['BASE_URL']);
		
        define("_DIRETORIO_BACKEND_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                                                 self::$configuracoesIni['PASTA_BACKEND']);
        
        
        define("_DIRETORIO_CSS_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                                          self::$configuracoesIni['PASTA_CSS']);

        define("_DIRETORIO_IMAGES_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                                                self::$configuracoesIni['PASTA_IMAGES']);

        define("_DIRETORIO_JS_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                                                 self::$configuracoesIni['PASTA_JS']);

        define("_DIRETORIO_CONFIG_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                                                 self::$configuracoesIni['PASTA_CONFIG']);

        define("_DIRETORIO_SERVICE_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                                                 self::$configuracoesIni['PASTA_SERVICE']);

        define("_DIRETORIO_INC_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                     self::$configuracoesIni['PASTA_INC']);
        
     
        
        define("_DIRETORIO_BACKEND_PHP_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                    self::$configuracoesIni['PASTA_BACKEND']
                                    ._SEPARADOR_DIRETORIO_.self::$configuracoesIni['PASTA_PHP']);
        
        define("_DIRETORIO_BACKEND_DB_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                    self::$configuracoesIni['PASTA_BACKEND']
                                    ._SEPARADOR_DIRETORIO_.self::$configuracoesIni['PASTA_DB']);
        define("_DIRETORIO_BACKEND_VO_", self::$configuracoesIni['BASE_PATH']._SEPARADOR_DIRETORIO_.
                                    self::$configuracoesIni['PASTA_BACKEND']
                                    ._SEPARADOR_DIRETORIO_.self::$configuracoesIni['PASTA_VO']);
        
    }
    
  
         
    // Previne que o usuário clone a instância
    public function __clone(){
        trigger_error('Clone is not allowed.', E_USER_ERROR);
    }
    
    private static function obtemSeparadorDiretorio($sistemaOperacional){
        if($sistemaOperacional == "WINDOWS"){
            return "\\";
        }else{
            return "/";
        }
    }

}
